In many applications it is useful for programs to communicate information to each other. When the programs employ different protocols, however, such communication cannot occur directly. Protocol translation of the information is first necessary in order for a program to correctly interpret the information transmitted by another program employing a different protocol.
One such application involves communications over the Internet. With the growing popularity of the Internet, there is a growing demand by certain users to drive tools through the Internet, instead of only browsing the Internet. In particular, these users desire to access and use remotely located, real-time interactive software through the Internet. In many cases, this kind of activity requires a persistent connection using a socket-based protocol, since such real-time interactive software were generally developed to run over a local area network (“LAN”).
On the other hand, the HyperText Transfer Protocol (“HTTP”) is the pervasive protocol of the World Wide Web. HTTP is a stateless protocol, because each command is executed independently, without knowledge of the commands that came before it. HTTP uses a request-response mechanism that is suitable for web browsing. HTTP, however, is different than many socket-based protocols in both format and handling procedure, thus making HTTP less than ideal for directly driving another program over the Internet.
Firewalls add further complications since they generally prevent direct and persistent connections to programs behind the firewall. Therefore, even though firewalls support HTTP communications through the Internet, driving an interactive real-time program behind a firewall is not straightforward. Modifying the interactive real-time programs to accommodate such communication is also generally impractical, because of the large number and complexity of such legacy programs.